Sublime Text のプラグイン書いてたらテストツールができてたよみたいな話


概要

Sublime Text のプラグインでSublimeSocketってのを作ってサーバと繋いだりして遊んでるんだけど、

それの簡易なテスト環境作って放置しておいたら、弄られて凄い事になってた。


様子

テストスイートを実行、内容に則ってエディタ側がとてもキモい動きをする。




解説

JSONを内包したオレオレDSLで、SublimeSocket APIのテストを書く。

それらを.sst拡張子のファイルにまとめて、テストスイートとして実行。

エディタ側に対して、テストスイートの各1件ずつが実行される。


フィルタをセット→フィルタに文字列を送る→hitしたらAPIを実行、

ファイルを作る→ファイルに書き込む→消す、

ファイルを作る→ファイルの特定箇所を選択する、

ファイルを作る→ファイルの特定箇所を選択する→書き込む、

バッファを作る→バッファの特定箇所を選択する→書き込む、

ダイアログを出す、

ツールチップを出す、

以上を連鎖させたり連動させたり。


入力側から最終出力される値までで管理し、assertなどでチェック、結果比較をしている。

Sublime側に対してどうしても人間がキー入力する必要がある部分(GUI、ツールチップ選択など)があり、

そのあたりは今のところ手で押している。

ムービー中で流れているテストは90件くらい。オールグリーンヤッター!


今後

テストスイートが作られた段階で、SublimeSocketのAPIはSublime TextのAPIを仮想化していて、

他のエディタでの同様の機構を呼び出す事も可能になっていた。


とりあえずVim版とかLightTable版を書いてみようかな。